home *** CD-ROM | disk | FTP | other *** search
/ NetNews Offline 2 / NetNews Offline Volume 2.iso / news / comp / lang / c-part1 / 8430 < prev    next >
Encoding:
Text File  |  1996-08-05  |  1.2 KB  |  34 lines

  1. Newsgroups: comp.lang.c
  2. Path: cwi.nl!dik
  3. From: dik@cwi.nl (Dik T. Winter)
  4. Subject: Re: Problem Negating an Unsigned Char
  5. Message-ID: <DnqMyr.4pF@cwi.nl>
  6. Sender: news@cwi.nl (The Daily Dross)
  7. Nntp-Posting-Host: chrysant.cwi.nl
  8. Organization: CWI, Amsterdam
  9. References: <Dnnros.Lq.0.-s@hkusuc.hku.hk> <4he27sINNdel@keats.ugrad.cs.ubc.ca>
  10. Date: Mon, 4 Mar 1996 10:11:15 GMT
  11.  
  12. In article <4he27sINNdel@keats.ugrad.cs.ubc.ca> c2a192@ugrad.cs.ubc.ca (Kazimir Kylheku) writes:
  13. ...
  14.  > >unsigned char a=0x11;
  15.  > >unsigned char b=0xEE;
  16. ...
  17.  > >    if( a == ~b ) {
  18. ...
  19.  > >The c remains unchange, while it changes to 1 if I cast the ~b to unsigned
  20.  > >char as if( a == (unsigned char) ~b )
  21.  > 
  22.  > The cast forces the integer value of ~b into an unsigned char, stripping
  23.  > high-order bits. The above will work only on machines with eight bit chars.
  24.  > 
  25.  > To make it portable, you must manually mask for the lower eight bits:
  26.  > 
  27.  >     if (a == (~b & 0xff))
  28.  
  29. And how would this work on machines with other than eight bit chars?
  30. Casting to unsigned char will work regardless the number of bits in a char.
  31. -- 
  32. dik t. winter, cwi, kruislaan 413, 1098 sj  amsterdam, nederland, +31205924098
  33. home: bovenover 215, 1025 jn  amsterdam, nederland; http://www.cwi.nl/~dik/
  34.